package com.example.plugin.filter;

import com.example.plugin.dto.PluginDto;
import com.example.plugin.service.PluginService;
import lombok.extern.slf4j.Slf4j;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.Filter;
import org.noear.solon.core.handle.FilterChain;

/**
 * @author airhead
 */
@Component
@Slf4j
public class PluginFilter implements Filter {

    @Inject
    private PluginService service;

    @Override
    public void doFilter(Context ctx, FilterChain chain) throws Throwable {
        // 模拟实际项目中的调用，实际项目此时会提示类无法找到，然后报错，但不影响执行，会从接口取值，只是没取缓存。
        // demo 没发现报错，但也是没有缓存。
        PluginDto pluginDto = service.cache();
        if (pluginDto != null) {
            System.out.println(pluginDto);
        }

        chain.doFilter(ctx);
    }
}
